package cn.anecansaitin.whimsy.common.capabilities.battle;

import cn.anecansaitin.whimsy.Whimsy;
import net.minecraft.world.entity.LivingEntity;
import net.neoforged.neoforge.capabilities.EntityCapability;

public interface IBattleMode {
    EntityCapability<IBattleMode, Void> BATTLE_MODE = EntityCapability.createVoid(Whimsy.resource("battle_mode"), IBattleMode.class);

    /**
     * @return 是否在战斗模式
     */
    boolean isInMode();

    /**
     * @param battleMode 设置战斗模式
     */
    void setMode(boolean battleMode);

    /**
     * 切换战斗模式<br>
     * 默认切换为相反状态
     */
    void switchMode(LivingEntity entity);

    /**
     * @return 获取战斗控制器
     */
    IBattleController getController();

    /**
     * @param controller 设置战斗控制器
     */
    void setController(IBattleController controller);

    /**
     * @param controllerId 通过ID设置战斗控制器
     */
    void setController(String controllerId);

    /**
     * 主逻辑
     */
    void tick(LivingEntity entity);
}
